package edu.cibertec.sicsolutions.vfs.domain.votacion;

import org.apache.log4j.Logger;

import edu.cibertec.sicsolutions.exception.DaoException;
import edu.cibertec.sicsolutions.exception.DomainException;
import edu.cibertec.sicsolutions.vfs.dao.votacion.ZonaHorariaDao;
import edu.cibertec.sicsolutions.vfs.spring.SpringContext;

import java.io.Serializable;
import java.util.Map;

/**
 * Domain Object of table ZONA_HORARIA 
 * @author enrique.vargas
 *
 */
public class ZonaHoraria implements Serializable {

	private static final Logger log = Logger.getLogger(ZonaHoraria.class);
	private static final ZonaHorariaDao zonaHorariaDao = (ZonaHorariaDao)SpringContext.get(ZonaHorariaDao.class);	
 
	
	public ZonaHoraria(){
	}
	
	public ZonaHoraria(String codigo){
		this.codigo = codigo;
	}
	
	/**
	 * Column: CODIGO, DataType: char
	 */
	private String codigo;
	/**
	 * Column: CIUDAD, DataType: varchar
	 */
	private String ciudad;
	/**
	 * Column: ZONA_HORARIA, DataType: varchar
	 */
	private String zonaHoraria;
	/**
	 * Column: ACRONIMO, DataType: varchar
	 */
	private String acronimo;
	/**
	 * Column: DIFERENCIA_GMT, DataType: varchar
	 */
	private String diferenciaGmt;
	/**
	 * Column: CODIGO_PAIS, DataType: char
	 */
	private String codigoPais;

	public String getCodigo(){
		return codigo;
	}
	public void setCodigo(String codigo){
		this.codigo = codigo;
	}
	public String getCiudad(){
		return ciudad;
	}
	public void setCiudad(String ciudad){
		this.ciudad = ciudad;
	}
	public String getZonaHoraria(){
		return zonaHoraria;
	}
	public void setZonaHoraria(String zonaHoraria){
		this.zonaHoraria = zonaHoraria;
	}
	public String getAcronimo(){
		return acronimo;
	}
	public void setAcronimo(String acronimo){
		this.acronimo = acronimo;
	}
	public String getDiferenciaGmt(){
		return diferenciaGmt;
	}
	public void setDiferenciaGmt(String diferenciaGmt){
		this.diferenciaGmt = diferenciaGmt;
	}
	public String getCodigoPais(){
		return codigoPais;
	}
	public void setCodigoPais(String codigoPais){
		this.codigoPais = codigoPais;
	}

	/**
	 * Get Object of Data Base By PK	 
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */
	public static ZonaHoraria getZonaHorariaByPk(ZonaHoraria zonaHoraria) throws DomainException{
		try{
			return zonaHorariaDao.getZonaHorariaByPk(zonaHoraria);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}		
	}
	
	/**
	 * Save Object
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */	
	public static void insertZonaHoraria (ZonaHoraria zonaHoraria) throws DomainException{
		try{
			zonaHorariaDao.insertZonaHoraria(zonaHoraria);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}		
	}
	
	/**
	 * Update Object 
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */
	public static void updateZonaHoraria (ZonaHoraria zonaHoraria) throws DomainException{		
		try{
			zonaHorariaDao.updateZonaHoraria(zonaHoraria);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}
	}
	
	/**
	 * Update Object 
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */
	public static void updateZonaHorariaByMap (Map map) throws DomainException{		
		try{
			zonaHorariaDao.updateZonaHorariaByMap(map);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}
	}
	
	/**
	 * Delete Object	 
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */
	public static void deleteZonaHorariaByPk(ZonaHoraria zonaHoraria) throws DomainException{		
		try{
			zonaHorariaDao.deleteZonaHorariaByPk(zonaHoraria);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}
	}
	
	/**
	 * Find Object By Filters
	 * @param zonaHoraria
	 * @return
	 * @throws DomainException
	 */
	public static ZonaHoraria[] findZonaHorariaByClass(ZonaHoraria zonaHoraria) throws DomainException{		
		try{
			return zonaHorariaDao.findZonaHorariaByClass(zonaHoraria);
		} catch (DaoException e) {
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		} catch (Exception e){
			log.error(e.getMessage(), e);
			throw new DomainException(e.getMessage(), e);
		}
	}

 
}